file-chooser: make enter location an operation mode
authorWilliam Jon McCann <william.jon.mccann@gmail.com>
Wed, 9 Apr 2014 17:49:54 +0000 (13:49 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 23 Apr 2014 02:35:02 +0000 (22:35 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=722211

gtk/gtkfilechooserwidget.c

index 6871b46dbc59c7a6371dbc51f3cba268be754d92..498ede0200bb32e89e71a03a5503e07ad6862ccf 100644 (file)
@@ -184,6 +184,7 @@ typedef enum {
 typedef enum {
   OPERATION_MODE_BROWSE,
   OPERATION_MODE_SEARCH,
+  OPERATION_MODE_ENTER_LOCATION,
   OPERATION_MODE_RECENT
 } OperationMode;
 
@@ -2120,7 +2121,7 @@ static void
 places_sidebar_show_enter_location_cb (GtkPlacesSidebar *sidebar,
                                        GtkFileChooserWidget *impl)
 {
-  location_mode_set (impl, LOCATION_MODE_FILENAME_ENTRY);
+  operation_mode_set (impl, OPERATION_MODE_ENTER_LOCATION);
 }
 
 static void
@@ -2332,6 +2333,9 @@ location_bar_update (GtkFileChooserWidget *impl)
 
   switch (priv->operation_mode)
     {
+    case OPERATION_MODE_ENTER_LOCATION:
+      break;
+
     case OPERATION_MODE_BROWSE:
       break;
 
@@ -2382,6 +2386,10 @@ operation_mode_stop (GtkFileChooserWidget *impl, OperationMode mode)
 {
   switch (mode)
     {
+    case OPERATION_MODE_ENTER_LOCATION:
+      stop_loading_and_clear_list_model (impl, TRUE);
+      break;
+
     case OPERATION_MODE_BROWSE:
       stop_loading_and_clear_list_model (impl, TRUE);
       break;
@@ -2401,6 +2409,13 @@ operation_mode_stop (GtkFileChooserWidget *impl, OperationMode mode)
     }
 }
 
+static void
+operation_mode_set_enter_location (GtkFileChooserWidget *impl)
+{
+  location_mode_set (impl, LOCATION_MODE_FILENAME_ENTRY);
+  location_bar_update (impl);
+}
+
 static void
 operation_mode_set_browse (GtkFileChooserWidget *impl)
 {
@@ -2443,6 +2458,10 @@ operation_mode_set (GtkFileChooserWidget *impl, OperationMode mode)
 
   switch (priv->operation_mode)
     {
+    case OPERATION_MODE_ENTER_LOCATION:
+      operation_mode_set_enter_location (impl);
+      break;
+
     case OPERATION_MODE_BROWSE:
       operation_mode_set_browse (impl);
       break;